yield from iterable
サブジェネレーターからの値が、ジェネレーターの(シークエンスする)値としてほしい。
サブジェネレータへの委譲編
大きい関数を小さい関数に分割するのと同じように、ジェネレータも小さく分割できるようにする。
単純なイテレータに対して、 yield from iterable は本質的には for item in iterable: yield item への単なる速記法です。
Syntax for Delegating to a Subgenerator
iterator を二重にしたい場面がよくあるように、generatorも二重で使いたいとこは多い。多分。
そういう場合に有用。sub generatorからの値をyieldする。
以下は昔の文
----------------------------------
再帰的に処理したい。入れ子構造になってる場合とか、pagingとか。
その場合、通常はyieldで返して、入れ子がある場合は、 そのジェレレータ内で、更に yield from foo-fun(bar-obj)を呼ぶ。
ジェネレータから、ジェネレータに(ここでは再帰でもある)
通常の値を返すだけの関数でも、再帰的な処理が必要な場合は、yieldが入る関数であるジェネレータで、(結果として)iterateする。
理解できてないなあ。。。行き当たりばったりでコードが動こレベル。。。
https://gyazo.com/e9b8b8129f64e1989a29525e111e4c31